Retningsafledede og gradientnedstigning
Introduktion
I det almindelige gymnasiepensum indgår nogle vigtige begreber indenfor infinitesimalregningen for funktioner af en og to variable. For funktioner af en variabel siges en funktion \(f\) at være kontinuert i et punkt \(x_{0}\), hvis funktionsværdien \(f(x)\) nærmer sig funktionsværdien \(f(x_{0})\) når \(x\) nærmer sig \(x_{0}\). Det vil sige, at
\[ \lim_{x \rightarrow x_{0}}{f\left( x \right) = f(x_{0})} \] Dette er illustreret i figur 1.
Funktionen \(f\) siges at være differentiabel i \(x_{0}\), hvis hældningen af sekanterne gennem de to punkter \((x_{0},f\left( x_{0} \right))\) og \((x,f\left( x \right))\) på grafen for \(f\) nærmer sig et fast tal \(f'(x_{0})\), når \(x\) nærmer sig \(x_{0}\):
\[ \lim_{x \rightarrow x_{0}}{\frac{f\left( x \right) - f(x_{0})}{x - x_{0}} = f'(x_{0})} \] Intuitivt kan man tænke på egenskaben kontinuitet i et punkt, som at grafen for funktionen ikke har et spring i punktet, og på egenskaben differentiabilitet i et punkt, som at grafen for funktionen hverken har spring eller knæk i punktet. Hældningen \(f'(x_{0})\) i punktet \((x_{0},f\left( x_{0} \right))\) på grafen er så en grænseværdi af nogle sekanthældninger, som hver for sig er gennemsnitshældninger for et mindre og mindre stykke af grafen. Har man studeret grænseværdibegrebet lidt nærmere, ved man, at den intuitive fortolkning ikke er særligt præcis og heller ikke helt rigtig, men alligevel er denne fortolkning god til at give en forståelse af gymnasiematematikken.
For funktioner af to variable siges en funktion \(f\) at være kontinuert i et punkt \({(x}_{0},y_{0})\), hvis funktionsværdien \(f(x,y)\) nærmer sig funktionsværdien \(f(x_{0},y_{0})\), når \((x,y)\) nærmer sig \({(x}_{0},y_{0})\):
\[ \lim_{(x,y) \rightarrow (x_{0},y_{0})}{f\left( x,y \right) = f(x_{0},y_{0})} \]
Definitionen er direkte overført fra den tilsvarende definition for funktioner af en variabel. Men man kan desværre ikke tilsvarende genbruge differentiabilitetsbegrebet fra funktioner af en variabel på denne måde
\[ \lim_{(x,y) \rightarrow (x_{0},y_{0})}{\frac{f\left( x,y \right) - f\left( x_{0},y_{0} \right)}{\left( x,y \right) - {(x}_{0},y_{0})} = f'(x_{0},y_{0})} \]
Her giver brøken på venstre side repræsenterende sekanthældningen ikke mening, da man ikke kan dividere med et punkt eller en vektor. I stedet tager man udgangspunkt i en alternativ definition af differentiabilitet for funktioner af en variabel, hvor man har kaldt skridtet fra \(x_{0}\) til \(x\) for \(h\):
\[ \lim_{h \rightarrow 0}{\frac{f\left( x_{0} + h \right) - f(x_{0})}{h} = f'(x_{0})} \]
Man bruger det til at definere de to første ordens partielle afledede for en funktion \(f\) af to variable \[ \begin{aligned} &\lim_{h \rightarrow 0} \frac{f\left( x_{0} + h,y_{0} \right) - f(x_{0},y_{0})}{h} = f_{x}^{'}(x_{0},y_{0})\\ &\lim_{h \rightarrow 0} \frac{f\left( x_{0},y_{0} + h \right) - f(x_{0},y_{0})}{h} = f_{y}^{'}(x_{0},y_{0}) \end{aligned} \] hvis grænserne eksisterer. Her tager man et skridt \(h\) i enten \(x\)-aksens eller \(y\)-aksens retning ud fra punktet \((x_{0},y_{0})\) og beregner en hældning af grafen i den retning ved hjælp af en grænseværdi af sekanthældninger for snitfunktionerne \(f(x,y_{0})\) og \(f(x_{0},y)\), som hver for sig er almindelige funktioner af en variabel, da man kun ændrer enten \(x\)-koordinaten eller \(y\)-koordinaten.
Gradientvektoren defineres som vektoren med de partielle afledede som koordinater:
\[ \nabla f\left( x_{0},y_{0} \right) = \begin{pmatrix} f_{x}^{'}\left( x_{0},y_{0} \right) \\ f_{y}^{'}\left( x_{0},y_{0} \right) \\ \end{pmatrix} \]
Det oplyses i gymnasiepensum, at denne vektor angiver den retning, man skal bevæge sig væk fra punktet \((x_{0},y_{0})\), for at funktionsværdierne \(f(x,y)\) vokser mest muligt. Vi vil i det følgende se nærmere på denne egenskab og bruge den til at løse optimeringsproblemer numerisk.
Retningsafledede
Vi vil nu se på væksten i andre retninger end blot i aksernes retning. Vi angiver retningen med en enhedsvektor - det vil sige en vektor med længde 1:
\[ \vec{u} = \begin{pmatrix} u_{1} \\ u_{2} \\ \end{pmatrix} \] hvor altså \(\lvert \vec u \rvert = 1\).
Vi definerer nu den retningsafledede af \(f\) i punktet \((x_{0},y_{0})\) i retningen \(\vec{u}\) ved
\[ D_{\vec{u}}f\left( x_{0},y_{0} \right) = \lim_{h \rightarrow 0}\frac{f\left( x_{0} + hu_{1},y_{0} + hu_{2} \right) - f(x_{0},y_{0})}{h} \tag{1}\]
hvis grænsen eksisterer.
Bemærk, at hvis \(\vec{u}\) peger i \(x\)-aksens retning, så bliver den retningsafledede til \(f_{x}^{'}(x_{0},y_{0})\), og hvis den peger i \(y\)-aksens retning, bliver den til \(f_{y}^{'}(x_{0},y_{0})\). Man udregner en sekanthældning ved at tage et skridt \(h\) i \(\vec{u}\)’s retning og dividere den fundne funktionstilvækst med \(h\). Derefter lader man \(h\) gå mod 0. Det giver hældningen af grafen for \(f\) i punktet \((x_{0},y_{0})\) i retningen \(\vec{u}\).
Det viser sig, at man kan udregne de retningsafledede med et prikprodukt:
\[ D_{\vec{u}}f\left( x_{0},y_{0} \right) = \nabla f(x_{0},y_{0}) \cdot \vec{u} \]
Vi vil argumentere for formlen, men lad os først se på konsekvenserne af den. Vi ved fra almindelig vektorregning, at
\[ \vec{a} \cdot \vec{b} = \lvert \vec{a} \rvert \cdot \lvert \vec{b} \rvert \cdot \cos(v) \]
hvor \(v\) er vinklen mellem de to vektorer. Da \(\lvert \vec{u} \rvert = 1\) betyder det, at
\[ D_{\vec{u}}f\left( x_{0},y_{0} \right) = \lvert \nabla f(x_{0},y_{0}) \rvert \cdot \cos(v) \]
hvor \(v\) er vinklen mellem gradientvektoren \(\nabla f\left( x_{0},y_{0} \right)\) og den valgte retning \(\vec{u}\).
Vi ved, at \(-1 \leq \cos(v) \leq 1\) samt at \(\cos(0^{{^\circ}})=1\) og \(\cos(180^{{^\circ}})=-1\). Det følger derfor, at den retningsafledede er størst (og dermed at \(f\) vokser mest), når \(\vec{u}\) peger i \(\nabla f(x_{0},y_{0})\)’s retning. Og tilsvarende at den retningsafledede er mindst (og dermed at \(f\) aftager mest), når \(\vec{u}\) peger i \(-\nabla f(x_{0},y_{0})\)’s retning. Det vil sige, at den retningsaflededes størsteværdi er
\[ D_{\vec{u}}f\left( x_{0},y_{0} \right) = \ \ \ \lvert \nabla f(x_{0},y_{0}) \rvert \]
når \(v = 0^{{^\circ}}\) og retningsaflededes mindsteværdi er
\[ D_{\vec{u}}f\left( x_{0},y_{0} \right) = - \lvert \nabla f(x_{0},y_{0}) \rvert \]
når \(v = 180^{{^\circ}}\). Det var netop, hvad vi gerne ville vise.
Middelværdisætningen
For at argumentere for formlen for de retningsafledede udregnet som et prikprodukt, skal vi bruge middelværdisætningen for funktioner af en variabel:
Sætning 1 Hvis \(f\) er kontinuert på \(\left\lbrack a;b \right\rbrack\) og differentiabel i \(\left\rbrack a;b \right\lbrack\), så findes der et tal \(c\) mellem \(a\) og \(b\), så tangenthældningen i \(c\) er lig med middelværdien af hældningen på hele intervallet \(\left\lbrack a;b \right\rbrack\). Det vil sige, at \[f^{'}\left( c \right) = \frac{f\left( b \right) - f(a)}{b - a}\]
Resultatet i middelværdisætningen kan omskrives til
\[ f\left( b \right) - f\left( a \right) = f^{'}\left( c \right) \cdot (b - a) \tag{2}\]
som er det, vi får brug for. Middelværdisætningen virker indlysende korrekt, hvis man prøver at tegne situationen, og beviset for middelværdisætningen kan findes i flere gymnasiebøger.
Inden vi går til argumentet for formlen for de retningsafledede, vil vi se på et enkelt eksempel med middelværdisætningen.
Eksempel 1 Funktionen \(f\left( x \right) = \sqrt{x}\) er kontinuert på \(\left\lbrack 0;4 \right\rbrack\) og differentiabel i \(\left\rbrack 0;4 \right\lbrack\), så betingelserne for at bruge middelværdisætningen er opfyldt.
Der findes så et tal \(c\) mellem 0 og 4, så \(f^{'}\left( c \right) = \frac{f\left( 4 \right) - f(0)}{4 - 0}\).
Vi ved, at \(f^{'}\left( x \right) = \frac{1}{2\sqrt{x}}\) så ligningen ovenfor bliver \[ \frac{1}{2\sqrt{c}} = \frac{\sqrt{4} - \sqrt{0}}{4 - 0} \] Det vil sige, at \[ \frac{1}{2\sqrt{c}} = \frac{1}{2} \] hvilket giver \(c = 1\).
Tangenthældningen af grafen for \(f\left( x \right) = \sqrt{x}\) i \(c = 1\) er altså det samme som middelværdien af hældningen af grafen på hele intervallet \(\left\lbrack a;b \right\rbrack = \left\lbrack 0;4 \right\rbrack\), det vil sige hældningen af den sekant, der forbinder startpunktet \((0,f\left( 0 \right))\) og slutpunktet \((4,f\left( 4 \right))\).
På figur 2 illustreres dette princip.
Middelværdisætningen siger altså bare, at hvis man forbinder start og slutpunktet – den blå linje – og udregner dens hældning, så kan man altid finde et punkt i det indre af intervallet, hvor tangenten i punktet – den grønne linje – har samme hældning.
Vi vender nu tilbage til definitionen af de retningsafledede og omskriver tælleren i (1) for at kunne bringe middelværdisætningen i spil \[ \begin{aligned} f\left( x_{0} + h \cdot u_{1},y_{0} + h \cdot u_{2} \right) - f(x_{0},y_{0}) & = \\ f\left( x_{0} + h \cdot u_{1},y_{0} + h \cdot u_{2} \right) & \color{red}- f\left( x_{0},y_{0} + h \cdot u_{2} \right) + f\left( x_{0},y_{0} + h \cdot u_{2} \right) \color{black} - f(x_{0},y_{0}) \end{aligned} \] Bemærk, at vi har lagt et led til og trukket det samme led fra (markeret med rødt).
Vi ser nu, at de to første led kun afviger på \(x\)-koordinaten (markeret med blåt nedenfor), og de to sidste led afviger kun på \(y\)-koordinaten (markeret med grønt): \[ \begin{aligned} f\left( x_{0} + h \cdot u_{1},y_{0} + h \cdot u_{2} \right) - f(x_{0},y_{0}) &= \\ \color{blue} f\left( x_{0} + h \cdot u_{1},y_{0} + h \cdot u_{2} \right) - & \color{blue} f\left( x_{0},y_{0} + h \cdot u_{2} \right) \color{black} + \color{green} f\left( x_{0},y_{0} + h \cdot u_{2} \right) - f(x_{0},y_{0}) \end{aligned} \tag{3}\]
Ved at bruge den omkskrevne middelværdisætning i (2) på de to snitfunktioner \(f\left( x,y_{0} + h \cdot u_{2} \right)\) som en funktion af \(x\) og \(f(x_{0},y)\) som en funktion af \(y\), får vi nu følgende:
\[ \color{blue} f\left( x_{0} + h \cdot u_{1},y_{0} + h \cdot u_{2} \right) - f\left( x_{0},y_{0} + h \cdot u_{2} \right) = f_{x}^{'}(c_{1},y_{0} + h \cdot u_{2}) \cdot h \cdot u_{1} \] og \[ \color{green} f\left( x_{0},y_{0} + h \cdot u_{2} \right) - f\left( x_{0},y_{0} \right) = f_{y}^{'}(x_{0},c_{2}) \cdot h \cdot u_{2} \]
Her har vi brugt, at den afledede af en snitfunktion, hvor vi kun varierer \(x\) er \(f_{x}^{'}\), og den afledede af en snitfunktion, hvor vi kun varierer \(y\) er \(f_{y}^{'}\). Tallet \(c_{1}\) ligger mellem \(x_{0}\) og \(x_{0} + h \cdot u_{1}\), og tallet \(c_{2}\) ligger mellem \(y_{0}\) og \(y_{0} + h \cdot u_{2}\).
Indsætter vi de to udtryk ovenfor på højreside i (3) får vi \[ \begin{aligned} f\left( x_{0} + h \cdot u_{1},y_{0} + h \cdot u_{2} \right) - f(x_{0},y_{0}) & = \color{blue} f_{x}^{'}(c_{1},y_{0} + h \cdot u_{2}) \cdot h \cdot u_{1} \color{black} + \color{green} f_{y}^{'}(x_{0},c_{2}) \cdot h \cdot u_{2} \\ \end{aligned} \]
Og bruges dette i definitionen for den retningsafledede i (1) ender vi med \[ \begin{aligned} D_{\vec{u}}f\left( x_{0},y_{0} \right) &= \lim_{h \rightarrow 0}\frac{f\left( x_{0} + h \cdot u_{1},y_{0} + h \cdot u_{2} \right) - f(x_{0},y_{0})}{h} \\ &= \lim_{h \rightarrow 0}\frac{f_{x}^{'}\left( c_{1},y_{0} + h \cdot u_{2} \right) \cdot h \cdot u_{1} + f_{y}^{'}(x_{0},c_{2}) \cdot h \cdot u_{2}\ }{h} \end{aligned} \] Vi kan nu dividere \(h\) op i hvert led og får \[ \begin{aligned} D_{\vec{u}}f\left( x_{0},y_{0} \right) &= \underset{h \rightarrow 0}{\text{lim}} f_{x}^{'}\left( c_{1},y_{0} + h \cdot u_{2} \right) \cdot u_{1} + f_{y}^{'}(x_{0},c_{2}) \cdot u_{2}\ \\ &= \lim_{h \rightarrow 0}\begin{pmatrix} f_{x}^{'}\left( c_{1},y_{0} + h \cdot u_{2} \right) \\ f_{y}^{'}(x_{0},c_{2}) \end{pmatrix} \cdot \begin{pmatrix} u_{1} \\ u_{2} \end{pmatrix} \end{aligned} \tag{4}\] hvis grænsen eksisterer.
Bemærk nu, at hvis både \(f_{x}^{'}(x,y)\) og \(f_{y}^{'}\left( x,y \right)\) eksisterer og er kontinuerte på en omegn af \((x_{0},y_{0})\), så er betingelserne for vores brug af middelværdisætningen opfyldt for små værdier af \(h\). Husk også på, at \(c_1\) ligger i intervallet \((x_0,x_0+h \cdot u_1)\) og \(c_2\) ligger i intervallet \((y_0,y_0+h \cdot u_2)\). Derfor vil
\[ \lim_{h \rightarrow 0}\left( c_{1},y_{0} + h \cdot u_{2} \right) = (x_{0},y_{0}) \] og \[ \lim_{h \rightarrow 0}\left( x_{0},c_{2} \right) = \ (x_{0},y_{0}) \]
På grund af af kontinuiteten af de partielle afledede vil grænseværdien i (4) eksistere og give det ønskede resultat
\[ D_{\vec{u}}f\left( x_{0},y_{0} \right) = \begin{pmatrix} f_{x}^{'}\left( x_{0},y_{0} \right) \\ f_{y}^{'}(x_{0},y_{0}) \\ \end{pmatrix} \cdot \begin{pmatrix} u_{1} \\ u_{2} \\ \end{pmatrix} = \nabla f(x_{0},y_{0}) \cdot \vec{u} \] Det var netop, hvad vi ønskede at vise.
Optimering
Betragt en funktion \(f\) givet ved forskriften \[ f\left( x,y \right) = \left( \left( x - 5 \right)^{2} + 3 \right) \cdot \left( 5 + \left( y - 10 \right)^{2} \right) + 30 \]
Hvis man ser lidt på forskriften, kan man måske overbevise sig selv om, at funktionen har et minimum på 45, som fås, når \(\left( x,y \right) = (5,10)\).
Grafen ses i figur 3.
Man kan lave en iterativ metode til at finde minimumspunktet ved at udnytte egenskaben ved gradientvektoren:
- Vælg et startpunkt \((x_0,y_0)\) som et første gæt på et minimumspunkt.
Vi udnytter nu, at \(- \nabla f(x_0,y_0)\) angiver den retning, hvor funktionsværdien falder mest i punktet \((x_0,y_0,f(x_0,y_0))\).
Gå derfor et lille skridt i retningen \(- \nabla f(x_0,y_0)\). Det giver så det næste punkt \((x_1,y_1)\), som forhåbentlig er et bedre bud på et minimumspunkt.
Processen foregår i definitionsmængden, men på grafen svarer det til at gå et lille stykke den stejleste vej ned ad bakken.
Processen itereres så gentagne gange indtil man forhåbentlig når minimumspunktet.
Vælger vi med den konkrete funktion et startpunkt på
\[ (x_0,y_0) = ( - 3,4) \]
og vælger vi i hvert skridt at lægge -0,001 gange den negative gradientvektor i punktet til, så kan nogle af de følgende \((x,y)\)-punkter ses til venstre i figur 4. Læg her mærke til hvordan vi nærmer os det globale minimumssted i \((5,10)\). Til højre i figur 4 ses det også hvordan vi ved hjælp af gradientnedstigning, nærmer os den globale minimumsværdi på \(f(5,10)=45\).
Vi ser, at den iterative gradientnedstigning faktisk nærmer sig det globale minimumspunkt. Så om ikke andet så virker metoden i hvert fald i dette konkrete tilfælde.
Træning af neurale netværk
At lede efter et globalt minimumspunkt eller i det mindste et brugbart lokalt minimumspunkt for en funktion af rigtig mange variable er et problem, man står overfor, når man skal træne et neuralt netværk og have fastlagt en masse vægte i netværket.
Det kan ikke gøres analytisk, så derfor bruger man netop en iterativ proces baseret på gradientnedstigning som metode til at finde frem til minimumspunktet. Eksemplet ovenfor illustrerer derfor idéen bag en central del af træningen af et neuralt netværk.
Læs mere om hvordan gradientnedstigning konkret bruges her: Perceptroner og Kunstige neurale netværk.